home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
AMIGA
/
AMICUS
/
AMICUS25.ADF
/
Snow
/
Flakes
(
.txt
)
< prev
next >
Wrap
AmigaBASIC Source Code
|
1989-01-26
|
3KB
|
116 lines
SCREEN 1,320,200,4,1:DEFINT A-Z:DIM CELL(89,89)
WINDOW 2,"Amiga Snowflakes",,20,1
MENU 1,0,1,"CONTROLS"
MENU 1,4,1,"INITIALIZE":MENU 1,5,1,"CHANGE SIZE"
MENU 1,6,1,"LOAD":MENU 1,7,1,"SAVE":MENU 1,8,1,"QUIT"
ON MENU GOSUB MENUINT
MENU ON
SIZE=64
NEWSIZE:
SIZE1=SIZE+1
INITIALIZE:
CLS:MENU 1,1,1,"START":MENU 1,2,1,"":MENU 1,3,1,"STEP"
LOCATE 1,26:PRINT"SIZE:":LOCATE 2,26:PRINT SIZE:LOCATE 4,26
PRINT"GENERATION:":LOCATE 7,26:PRINT"POPULATION:"
H=SIZE/2:GENERATION=0
FOR X=1 TO H
FOR Y=X TO 1 STEP-1
CELL(X,Y)=0
CELL(X,X)=7
NEXT
NEXT
RUNMODE=0
MAINLOOP:
LINE (0,0)-(SIZE+2,SIZE+2),2,BF
LOCATE 5,26:PRINT GENERATION;" ";
POPULATION=-128
FOR X=1 TO H
FOR Y=X TO 1 STEP-1
STORE=0:C=CELL(X,Y)
IF X <> Y AND (C < 5 OR C > 7) GOTO STORECELL
STORE=1:COLOR RND*12+3:POPULATION=POPULATION+8
PSET(X,Y):PSET(SIZE1-X,Y):PSET(X,SIZE1-Y):PSET(SIZE1-X,SIZE1-Y)
PSET(Y,X):PSET(SIZE1-Y,X):PSET(Y,SIZE1-X):PSET(SIZE1-Y,SIZE1-X)
STORECELL:
CELL(X,Y)=STORE
NEXT Y
NEXT X
COLOR 1:LOCATE 8,26:PRINT POPULATION;" ";
CHECKMENU:
COLOR 1:IF MENUHIT = 1 GOTO EXECUTE
IF RUNMODE=0 GOTO CHECKMENU
GENERATE:
COLOR 1:GENERATION=GENERATION+1
FOR X=1 TO H
FOR Y=X TO 1 STEP-1
IF (CELL(X,Y) AND 1) = 0 GOTO DEADCELL
CELL(X-1,Y-1)=CELL(X-1,Y-1)+2:CELL(X,Y-1)=CELL(X,Y-1)+2
CELL(X+1,Y-1)=CELL(X+1,Y-1)+2:CELL(X-1,Y)=CELL(X-1,Y)+2
CELL(X+1,Y)=CELL(X+1,Y)+2:CELL(X-1,Y+1)=CELL(X-1,Y+1)+2
CELL(X,Y+1)=CELL(X,Y+1)+2:CELL(X+1,Y+1)=CELL(X+1,Y+1)+2
IF X=H THEN CELL(X,Y-1)=CELL(X,Y-1)+2:CELL(X,Y)=CELL(X,Y)+2:CELL(X,Y+1)=CELL(X,Y+1)+2
DEADCELL:
NEXT Y
NEXT X
FOR X=2 TO H-1
IF (CELL(X,X-1) AND 1) <> 0 THEN CELL(X,X-1)=CELL(X,X-1)+2
NEXT X
FOR X= 1 TO H
CELL(0,X)=0:CELL(X-1,X+1)=0:CELL(X,0)=0
NEXT X
GOTO MAINLOOP
EXECUTE:
MENUHIT=0
ON MENUCAT GOTO STARTMODE,STOPMODE,GENERATE,INITIALIZE,CHANGESIZE,LOADER,SAVER,QUIT
STARTMODE:
RUNMODE=1
MENU 1,1,1,"RUNNING":MENU 1,2,1,"STOP":MENU 1,3,1,""
GOTO GENERATE
STOPMODE:
RUNMODE=0
MENU 1,1,1,"START":MENU 1,2,1,"":MENU 1,3,1,"STEP"
GOTO CHECKMENU
QUIT:
SYSTEM
CHANGESIZE:
CLS:PRINT"INPUT THE NEW LENGTH/WIDTH OF"
PRINT"CELL ARRAY. USE ONLY EVEN NUMBERS."
INPUT SIZE:SIZE=SIZE AND 254:IF SIZE > 176 GOTO CHANGESIZE
GOTO NEWSIZE
LOADER:
LOCATE 22,1:INPUT"FILE NAME ";A$
OPEN"I",1,A$:INPUT#1,SIZE,GENERATION:H=SIZE/2:SIZE1=SIZE+1
FOR X=1 TO H
FOR Y=X TO 1 STEP-1
INPUT#1,CELL(X,Y):IF CELL(X,Y)=1 THEN CELL(X,Y)=7
NEXT Y
NEXT X
LINE (0,0)-(178,178),0,BF:LOCATE 2,26:PRINT SIZE
CLOSE:LOCATE 22,1:PRINT STRING$(40,32)
RUNMODE=0:MENU 1,1,1,"START":MENU 1,2,1,"":MENU 1,3,1,"STEP"
GOTO MAINLOOP
SAVER:
LOCATE 19,1:INPUT"FILE NAME ";A$
OPEN"O",1,A$:PRINT#1,SIZE,GENERATION
FOR X=1 TO H
FOR Y=X TO 1 STEP-1
PRINT#1,CELL(X,Y)
NEXT Y
NEXT X
CLOSE:LOCATE 19,1:PRINT STRING$(40,32):GOTO GENERATE
MENUINT:
MENUHIT=MENU(0):MENUCAT=MENU(1):RETURN